﻿using System;
using System.Collections.Generic;
using System.Text;

using Circo.Framework.BusinessLogic;
using Circo.Framework.Persistencia;
using SC.eWedding.BusinessLogic.Handlers;
using SC.eWedding.Data.Entities;
using Circo.Framework.BusinessLogic.Views.Filters;
using SC.eWedding.BusinessLogic.Errores;

namespace SC.eWedding.BusinessLogic.Views
{
    public partial class UsuarioView : AbstractView
    {
        public static UsuarioView NuevoUsuario(string nombre, string apellido, string nombreUsuario, string contrasenia, string email, string direccion, UsuarioView.TiposDNI tipoDni, string dni, UsuarioView.TipoSexo sexo, int provincia, int localidad, out ErrorRegistroUsuario errorCode)
        {
            UsuarioView usuario;
            ProvinciaView prov;
            LocalidadView loc;
            List<ViewFilter> filtros = new List<ViewFilter>();

            errorCode = ErrorRegistroUsuario.OK;

            try
            {
                

                filtros.Clear();
                filtros.Add(new ViewCommonFilter("NombreUsuario", nombreUsuario));
                if (UsuarioHandler.FindBy(filtros).Count > 0)
                {
                    errorCode = ErrorRegistroUsuario.UsuarioExistente;
                    return null;
                }

                prov = ProvinciaHandler.FindById(provincia);
                if (prov == null)
                {
                    errorCode = ErrorRegistroUsuario.ProvinciaInvalida;
                    return null;
                }


                loc = LocalidadHandler.FindById(localidad);
                if (loc == null)
                {
                    errorCode = ErrorRegistroUsuario.LocalidadInvalida;
                    return null;
                }


                usuario = new UsuarioView();
                usuario.Nombre = nombre;
                usuario.Apellido = apellido;
                usuario.NombreUsuario = nombreUsuario;
                usuario.Contrasenia = contrasenia;
                usuario.Mail = email;
                usuario.Direccion = direccion;
                usuario.TipoDNI = tipoDni;
                usuario.DNI = dni;
                usuario.Sexo = sexo;
                usuario.Provincia = prov;
                usuario.Localidad = loc;
                UsuarioHandler.Persist(usuario);

                return usuario;
            }
            catch (Exception e)
            {
            }

            return null;
        }
    }
}
